package zuo.algo.c10;

/**
 * 01:30
 * 规定1和A对应、2和B对应、3和C对应...
 * 那么一个数字字符串比如"111"，就可以转化为"AAA"、"KA"和"AK"。
 * 给定一个只有数字字符组成的字符串str，返回有多少种转化结果。
 */
public class ConvertToLetterString {

    public static int exc1(String str) {
        return process(str.toCharArray(), 0);
    }

    public static int process(char[] chars, int i) {
        if (i == chars.length) {
            return 1;
        }
        char c = chars[i];
        if ('0' == c) {
            return 0;
        }
        if ('1' == c) {
            int res = process(chars, i + 1);
            if ((i + 1) < chars.length) {
                res += process(chars, i + 2);
            }
            return res;
        }
        if ('2' == c) {
            int res = process(chars, i + 1);
            if ((i + 1) < chars.length && chars[i + 1] <= '6' && chars[i + 1] >= '0') {
                res += process(chars, i + 2);
            }
            return res;
        }
        return process(chars, i + 1);
    }

    public static void main(String[] args) {
        System.out.println(exc1("111"));
    }
}
